cmake_minimum_required(VERSION 3.10)  #cmake版本最低3.10

# 获取当前子CMake文件所在目录的完整路径 
get_filename_component(CURRENT_DIR_PATH "${CMAKE_CURRENT_LIST_DIR}" ABSOLUTE) 
# 从完整路径中提取目录名称 
get_filename_component(CURRENT_DIR_NAME "${CURRENT_DIR_PATH}" NAME)

# 设置工程名
project(${CURRENT_DIR_NAME})

# 设置C++标准
set(CMAKE_CXX_STANDARD 11) 

# 如果使用 MSVC 编译器，启用 C++11 标准支持
if(MSVC)
    add_compile_options(/Zc:__cplusplus)
endif()

# 启用当前目录的include路径
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

# 启用 Qt 自动处理机制
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTORCC ON)
SET(CMAKE_AUTOUIC ON)

# 查找 Qt5 库
find_package(Qt5 COMPONENTS Core Widgets Gui REQUIRED)

# 查找所有源文件、UI 文件和资源文件
file(GLOB UI_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.ui")
file(GLOB RCC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*qrc")
file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.h" "${CMAKE_CURRENT_BINARY_DIR}/*.h")
file(GLOB CPP_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")

# 将 UI 文件和资源文件分组到 IDE 中
source_group("Form Files" FILES ${UI_FILES})
source_group("Resource Files" FILES ${RCC_FILES})
source_group("Header Files" FILES ${HEADER_FILES})
source_group("Source Files" FILES ${CPP_FILES})

# 创建可执行文件
add_executable(${PROJECT_NAME} WIN32 ${HEADER_FILES} ${CPP_FILES} ${UI_FILES} ${RCC_FILES})

# 链接 Qt 库
target_link_libraries(${PROJECT_NAME} 
    Qt5::Core
    Qt5::Gui
    Qt5::Widgets
)
